﻿Imports PTIC_Util
Imports PTIC_GestionBDD

Namespace moteurTauxGaranti1

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Public Class simulationStressTestCSRSAS
        Inherits simulationIndividuelle

        Private _Connection As IConnection

        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New(ByVal moteur1 As IIntegMoteur_MethodeEqTarif, _
                       ByVal nom As String, _
                       ByVal chocMin As Double, _
                       ByVal chocMax As Double, _
                       ByVal pas As Double, _
                       ByVal chocRadar As Double,
                       ByVal Connection As IConnection)
            MyBase.New(moteur1, nom, chocMin, chocMax, pas, chocRadar)
            _Connection = Connection
        End Sub
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Protected Overrides Sub procedureCalcul()

            If ModuleTauxGaranti.currentasyncinfo IsNot Nothing Then
                Using ModuleTauxGaranti.currentasyncinfo
                    ModuleTauxGaranti.currentasyncinfo.Progress = 0
                    ModuleTauxGaranti.currentasyncinfo.Message = "Simulation des variations " & Me.Description & "."
                End Using
            End If

            Dim Params As String = "NomParametre=" & _nom & " ChocMin=" & _chocMin & " ChocMax=" & _chocMax & " pas=" & _pas
            Params = Params.Replace(",", ".")
            _Connection.ExecuteStoredProcess(csteEmplacementReferentiel, "CalculTxGarEqTarifaireSimulCSRImmo", Params)

            If ModuleTauxGaranti.currentasyncinfo IsNot Nothing Then
                Using ModuleTauxGaranti.currentasyncinfo
                    ModuleTauxGaranti.currentasyncinfo.Progress = 0.5
                    ModuleTauxGaranti.currentasyncinfo.Message = "Simulation des variations " & Me.Description & "."
                End Using
            End If

            'Récupération de la table SAS contenant la synthèse des résultats de la simulation des paramètres
            Dim ResultatsDet As New TableBDD_SAS("TxGarEqTarifResSimulSynth",
                New Cla_NomFichier(csteEmplacementCalculsInt & "Traitmodeltxgareqtarifres_synth.sas7bdat"),
                Me._Connection.Connection,
                csteLibSASCalculsInt)

            Dim SyntheseSimul As DataTable = ResultatsDet.execute_DataTableSortie(False)

            'Renommer les colonnes pour coller avec ce qui est attendu pour la représentation des graphiques
            SyntheseSimul.Columns("ValChoc").ColumnName = _nom
            SyntheseSimul.Columns("SP").ColumnName = "S/P"

            'La valeur à représenter sur le radar est enregistrée dans ValeurRadar
            'Il faut rechercher dans la colonne "_nom" la valeur du choc correspondant à celui qui sera représenté sur le radar
            'et récupérer la valeur du S/P pour la mettre dans valeurRadar.
            Dim RowRadar As DataRow = (From r In SyntheseSimul.Rows Select r Where Math.Abs(r(_nom) - _chocRadar) < 0.00000001).FirstOrDefault
            _valeurRadar = RowRadar("S/P")

            'Si la ligne a été ajoutée spécifiquement pour le radar (ne fait pas partie du graphique), on la supprime.
            If Int((_chocRadar - _chocMin) / _pas) <> (_chocRadar - _chocMin) / _pas Then RowRadar.Delete()

            _resultats = SyntheseSimul

        End Sub
    End Class

End Namespace